// type和接口
{
  // type可以声明别名
  type myNumber = number
  // 联合类型
  type Sex = 'Boy' | 'Girl'

  type User = {
    name: string,
    age: myNumber,
    show(): string,
  }

  // interface User {
  //   name: string,
  //   age: number,
  //   show(): string
  // }


  const zrf: User = {
    name: 'zrf',
    age: 22,
    show(): string {
      return 'string'
    }

  }


  // 区别
  // 接口可以合并和继承
  // type不能重复声明

  // 合并语法
  // type A = B & C 
  // B和C可以是接口也可以是类型

  // 类型也可以向接口一样使用implments
  class Person implements User {
    name: 'zrf'
    age: 22
    show(): string {
      return 'string'
    }
  }
}